/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Yves Coeurnelle
 */
package edu.com.gestionstock.controleur;

import edu.com.gestionstock.bean.Livres;
import edu.com.gestionstock.bean.Dvd;
import edu.com.gestionstock.bean.Utilisateur;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//import java.awt.event.WindowAdapter;
//import java.awt.event.WindowEvent;
//import javax.swing.JOptionPane;
import javax.swing.JTextField;

//import java.sql.SQLException;
import java.util.ArrayList;


import edu.com.gestionstock.dao.DAO;
import edu.com.gestionstock.dao.bo.UtilisateursDAO;
import edu.com.gestionstock.vue.PanneauRechercheClient;

//import java.awt.BorderLayout;
public class ControleurRechercheClient implements ActionListener
{

    private PanneauRechercheClient rechercheClient;
    private ControleurAfficheClient afficheClient;
    private Dvd dvd = new Dvd();
    private Utilisateur client = new Utilisateur();
    private Livres livre = new Livres();

    public ControleurRechercheClient(PanneauRechercheClient recherche, ControleurAfficheClient affiche)
    {
        this.rechercheClient = recherche;
        this.afficheClient = affiche;
        setControleurFenetre(this);
    }

    public void actionPerformed(ActionEvent e)
    {
        Object source = e.getSource();


        //Recherche Stock
        if ( source == rechercheClient.getJButtonAnnuler() )
        {
            this.reinitialiseFormulaire();

        }

        if ( source == rechercheClient.getJButtonRecherche() )
        {
            //Récupération des données qui ont été saisies
            JTextField nomclient = rechercheClient.getJTextField_Nom();
            JTextField commune = rechercheClient.getJTextField_Commune();
            JTextField rue = rechercheClient.getJTextField_Rue();
            JTextField codepostal = rechercheClient.getJTextField_CodePostal();
            JTextField prenomclient = rechercheClient.getJTextField_Prenom();
            JTextField idclient = rechercheClient.getJTextField_Id();

            //On créer les objets DAO
            DAO<Utilisateur> ClientDao = new UtilisateursDAO();
            ArrayList<Utilisateur> arrClient = new ArrayList<Utilisateur>();

            //Si on a fait une recherche sur l'ID alors il ne doit donner qu'un seul resultat, on utilise donc la method fin()
            if ( !idclient.getText().isEmpty() )
            {
                System.out.println("Recherche sur ID");
                //Je ne fais le set que maintenant, sinon c'est que id n'a pas de valeur et donc pas d'interet de faire le set
                client.setId(Integer.parseInt(idclient.getText()));

                client = ClientDao.find(client.getId());
                //On vérifie si l'objet retourné n'est pas vide, et on l'ajoute à l'arraylist
                if ( client.getNom() != null )
                {
                    arrClient.add(client);
                }
            }
            else
            {
                //On met les données dans l'objet utilisateur
                client.setCommune(commune.getText());
                client.setNom(nomclient.getText());
                client.setPrenom(prenomclient.getText());
                client.setRue(rue.getText());
                client.setCodePostal(codepostal.getText());

                System.out.println("Recherche sur champ texte");
                //Sinon on fait une recherche sur les autres champs, donc plusieurs resultats possible
                //On utilise la methode DAO pour recupérer les listes de Client qui correspondent aux criteres de recherche       
                arrClient = ClientDao.findList(client);

            }

            //On masque le panneau de recherche
            rechercheClient.setVisible(false);

            //On vide le tableau d'affichage
            afficheClient.videClient();

            //On envoit les listes au panneau affiche stock
            afficheClient.afficheClient(arrClient);

            //On affiche le panneau de resultat
            afficheClient.setStockVisible(true);

            //On vide les champs du panneau recherche pour la recherche suivante
            this.reinitialiseFormulaire();
        }

    }

    public void setControleurFenetre(ActionListener listener)
    {
        rechercheClient.getJButtonAnnuler().addActionListener(listener);
        rechercheClient.getJButtonRecherche().addActionListener(listener);
    }

    public void reinitialiseFormulaire()
    {
        this.rechercheClient.setjTextFieldNom(null);
        this.rechercheClient.setjTextFieldPrenom(null);
        this.rechercheClient.setjTextField_Id(null);
        this.rechercheClient.setjTextFieldRue(null);
        this.rechercheClient.setjTextFieldCodePostal(null);
        this.rechercheClient.setjTextFieldDateNaissance(null);
        this.rechercheClient.setjTextFieldCommune(null);
    }
}
